package singleton;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.thread.ConcurrencyTester;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author: 582895699@qq.com
 * @Desctription: 饿汉式；一上来就把单例对象创建出来了，要用的时候直接返回即可，
 * 这种可以说是单例模式中最简单的一种实现方式。但是问题也比较明显。
 * 单例在还没有使用到的时候，初始化就已经完成了。
 * 也就是说，如果程序从头到位都没用使用这个单例的话，单例的对象还是会创建。这就造成了不必要的资源浪费
 * @Date: Created in 2021/12/5 22:47
 */
@Slf4j
public class SingletonOne {
    // 私有的实例化
    private static final SingletonOne SINGLETON_ONE = new SingletonOne();

    public List list;

    /**
     * 线程安全；没有延迟加载；
     */
    private SingletonOne() {
        log.info("加载数据源");
        String string = FileUtil.readString(new File("F:\\fx.json"), StandardCharsets.UTF_8);
        JSONArray jsonArray = JSONUtil.parseArray(string);
        list = jsonArray.toBean(ArrayList.class);
    }

    public static SingletonOne getInstance() {
        return SINGLETON_ONE;
    }

    public int getSize() {
        return list.size();
    }

    
}
